/*
 * Endless Code License
 * Copyright (C) 2009 Jingul, Kim
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef ECGL_H_
#define ECGL_H_

#include <jni.h>

#include <gl/gl.h>

#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT void JNICALL Java_ec_gfx_GL_pointSize(JNIEnv *, jobject, jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_blendFunc(JNIEnv *, jobject, jint, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_pushAttrib(JNIEnv *, jobject, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_pushMatrix(JNIEnv *, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_popAttrib(JNIEnv *, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_popMatrix(JNIEnv *, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_multiMatrix(JNIEnv *, jobject,
		jfloatArray);

JNIEXPORT void JNICALL Java_ec_gfx_GL_loadIdentity(JNIEnv *, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_matrixMode(JNIEnv *, jobject, jint);
JNIEXPORT jint JNICALL Java_ec_gfx_GL_renderMode(JNIEnv *, jobject, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_clear(JNIEnv *, jobject, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_clearColor(JNIEnv *, jobject, jfloat,
		jfloat, jfloat, jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_translatef(JNIEnv *, jobject, jfloat,
		jfloat, jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_scalef(JNIEnv *, jobject, jfloat,
		jfloat, jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_rectf(JNIEnv *, jobject, jfloat, jfloat,
		jfloat, jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_initNames(JNIEnv *, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_loadName(JNIEnv *, jobject, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_pushName(JNIEnv *, jobject, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_popName(JNIEnv *, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_getFloatv(JNIEnv *, jobject, jint,
		jfloatArray);

JNIEXPORT void JNICALL Java_ec_gfx_GL_getIntegerv(JNIEnv *, jobject, jint,
		jintArray);

JNIEXPORT void JNICALL Java_ec_gfx_GL_viewport(JNIEnv *, jobject, jint, jint,
		jint, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_ortho(JNIEnv *, jobject, jdouble,
		jdouble, jdouble, jdouble, jdouble, jdouble);

JNIEXPORT void JNICALL Java_ec_gfx_GL_color3f(JNIEnv *, jobject, jfloat,
		jfloat, jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_selectBuffer(JNIEnv *, jobject, jint,
		jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_begin(JNIEnv *, jobject, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_end(JNIEnv *, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_vertex2f(JNIEnv *, jobject, jfloat,
		jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_vertex3f(JNIEnv *, jobject, jfloat,
		jfloat, jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_lineWidth(JNIEnv *, jobject, jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_rasterPos2i(JNIEnv *, jobject, jint, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_drawPixels(JNIEnv *, jobject, jint, jint,
		jint, jint, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_bitmap(JNIEnv *, jobject, jint, jint,
		jint, jint, jint, jint, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_genTextures(JNIEnv *, jobject, jint, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_deleteTextures(JNIEnv *, jobject, jint, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_bindTexture(JNIEnv *, jobject, jint, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_texParameteri(JNIEnv *, jobject, jint, jint, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_texImage2D(JNIEnv *, jobject, jint,
		jint, jint, jint, jint, jint, jint, jint, jobject data);

JNIEXPORT void JNICALL Java_ec_gfx_GL_texCoord2f(JNIEnv *, jobject, jfloat, jfloat);

JNIEXPORT void JNICALL Java_ec_gfx_GL_enable(JNIEnv *, jobject, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_disable(JNIEnv *, jobject, jint);

JNIEXPORT jint JNICALL Java_ec_gfx_GL_genLists(JNIEnv *, jobject, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_deleteLists(JNIEnv *, jobject, jint, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_newList(JNIEnv *, jobject, jint, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_endList(JNIEnv *, jobject);

JNIEXPORT void JNICALL Java_ec_gfx_GL_callList(JNIEnv *, jobject, jint);

JNIEXPORT void JNICALL Java_ec_gfx_GL_callLists(JNIEnv *, jobject, jint, jint, jobject);

#ifdef __cplusplus
}
#endif

#endif /* ECGL_H_ */
